// house_pkg/pages/locate/index.ts
// 导入 QQMapWX 实例化对象
import qqmapsdk from '../../../utils/mapLocation'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 纬度
    latitude: '',
    // 经度
    longitude: '',
    // 当前位置
    address: '',
    // 附近小区数据
    residentialList: [],
  },
  // 逆地址解析
  formSubmit(e) {
    var _this = this
    let address = ''
    qqmapsdk.reverseGeocoder({
      //位置坐标，默认获取当前位置，非必须参数
      /**
       * 
       //Object格式
        location: {
          latitude: 39.984060,
          longitude: 116.307520
        },
      */
      /**
       *
       //String格式
        location: '39.984060,116.307520',
      */
      location: '', //获取表单传入的位置坐标,不填默认当前位置,示例为string格式
      //get_poi: 1, //是否返回周边POI列表：1.返回；0不返回(默认),非必须参数
      success: function (res) {
        //成功后的回调

        _this.nearby_search()
        address = res.result.address
        var res = res.result
        var mks = []
        /**
         *  当get_poi为1时，检索当前位置或者location周边poi数据并在地图显示，可根据需求是否使用
         *
            for (var i = 0; i < result.pois.length; i++) {
            mks.push({ // 获取返回结果，放到mks数组中
                title: result.pois[i].title,
                id: result.pois[i].id,
                latitude: result.pois[i].location.lat,
                longitude: result.pois[i].location.lng,
                iconPath: './resources/placeholder.png', //图标路径
                width: 20,
                height: 20
            })
            }
        *
        **/
        //当get_poi为0时或者为不填默认值时，检索目标位置，按需使用
        mks.push({
          // 获取返回结果，放到mks数组中
          title: res.address,
          id: 0,
          latitude: res.location.lat,
          longitude: res.location.lng,
          iconPath: './resources/placeholder.png', //图标路径
          width: 20,
          height: 20,
          callout: {
            //在markers上展示地址名称，根据需求是否需要
            content: res.address,
            color: '#000',
            display: 'ALWAYS',
          },
        })
        _this.setData({
          //设置markers属性和地图位置poi，将结果在地图展示
          markers: mks,
          poi: {
            latitude: res.location.lat,
            longitude: res.location.lng,
          },
        })
      },
      fail: function (error) {
        console.error(error)
      },
      complete: function (res) {
        _this.setData({
          address: res.result.address,
        })
      },
    })
    this.setData({
      address,
    })
  },

  // 地点搜索
  nearby_search() {
    var _this = this
    // 调用接口
    qqmapsdk.search({
      keyword: '住宅小区', //搜索关键词
      // 配置经纬度
      location: `${this.data.latitude},${this.data.longitude}`, //设置周边搜索中心点
      success: function (res) {
        //搜索成功后的回调
        var mks = []
        // 从搜索到的结果中保留5条，提取每条的id、title、_distance信息
        for (var i = 0; i < 5; i++) {
          mks.push({
            // 获取返回结果，放到mks数组中
            title: res.data[i].title,
            id: res.data[i].id,
            _distance: res.data[i].id
          })
        }
        _this.setData({
          //设置markers属性，将搜索结果显示在地图中
          markers: mks,
          residentialList: mks,
        })
      },
      fail: function (res) {
      },
      complete: function (res) {
      },
    })
  },

  // 重新定位
  async resetLocation() {
    const {
      latitude, longitude, address
    } = await wx.chooseLocation()
    this.setData({
      // 纬度
      latitude,
      // 经度
      longitude,
      // 地点
      address
    })
    await this.nearby_search()
  },
  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad() {
    // 获取当前位置的经纬度
    const { latitude, longitude } = await getApp().getLatAndLong();
    this.setData({ latitude, longitude })

    // 地址逆解析
    await this.formSubmit()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() { },

  /**
   * 生命周期函数--监听页面显示
   */
  async onShow() {
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() { },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() { },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() { },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() { },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() { },
})
